#ifndef _SYS_PARAM_H_
#define _SYS_PARAM_H_

#include "FanObj.h"
#include "SysTypes.h"

#define PARAM_VTABLE(self)   ((ParamVTable*)((FanObj*)self)->vtable)


extern Type*    Param_classType;
extern VTable*  Param_classVTable;


/* [sys::Param] Attributes */
struct Param
{
  FanObj        super;
};


/* [sys::Param] Virtual-table */
typedef struct ParamVTable
{
  FanObjVTable  super;
} ParamVTable;


/* [sys::Param] Methods and fields */
Str*            Param_toStr(Obj self);
Str*            Param_name(Param* self);
Type*           Param_type(Param* self);
Bool            Param_hasDefault(Param* self);


/* [sys::Param] Type-system functions */
Type*           Param_initType(void);
VTable*         Param_initVTable(void);
void            Param_initStatic(void);


#endif
